The PGC3 MDD study is including the following analyses to identify genes associated with MDD:


Read in results from all analyses

Show code
##########
# Nearest gene
##########

library(data.table)

# Read in GWAS results
# Currently we are using results only for lead indepdendant associations from COJO
# I think this is fine
indep_hits<-fread('../../docs/tables/meta_snps_full_eur.cojo.txt')

# Link SNPs to nearest gene
# Insert nearest gene information
library(biomaRt)
ensembl = useEnsembl(biomart="ensembl", dataset="hsapiens_gene_ensembl", GRCh=37)
Genes<-getBM(attributes=c('external_gene_name','chromosome_name','start_position','end_position'), mart = ensembl)

window<-50000

for(i in 1:nrow(indep_hits)){
  Genes_i<-Genes[Genes$start_position < (indep_hits$BP[i] + window) & Genes$end_position > (indep_hits$BP[i] - window) & Genes$chromosome_name == indep_hits$CHR[i],]
  if(nrow(Genes_i) != 0){
    gene_string<-NULL
    for(j in 1:nrow(Genes_i)){
      if(indep_hits$BP[i] > Genes_i$start_position[j] & indep_hits$BP[i] < Genes_i$end_position[j]){
        gene_string<-rbind(gene_string, data.frame(ID=Genes_i$external_gene_name[j],
                                                   Dist=0,
                                                   Pos=NA))
      }
      if(indep_hits$BP[i] < Genes_i$start_position[j]){
        gene_string<-rbind(gene_string, data.frame(ID=Genes_i$external_gene_name[j],
                                                   Dist=abs(indep_hits$BP[i] - Genes_i$start_position[j]),
                                                   Pos='-'))
      }
      if(indep_hits$BP[i] > Genes_i$end_position[j]){
        gene_string<-rbind(gene_string, data.frame(ID=Genes_i$external_gene_name[j],
                                                   Dist=abs(indep_hits$BP[i] - Genes_i$end_position[j]),
                                                   Pos='+'))
      }
    }
    gene_string<-gene_string[order(gene_string$Dist),]
    indep_hits$NearestGene[i]<-as.character(gene_string$ID[1])
  } else {
    indep_hits$NearestGene[i]<-NA
  }
}

##########
# SNP-finemapping
##########

# Read in finemapping results from Joni. This table shows genes implicated by the finemapping results, by a gene containing the entire 95% credible set.
finemap<-fread('../../docs/tables/finemapping/Locus_FineMapping_Full_Results.csv')

finemap_genes<-unlist(strsplit(finemap$High.Confidence.Genes.Names, ','))
finemap_genes<-finemap_genes[finemap_genes != '-']

##########
# FastBAT
##########

# Read in FastBAT results
fastbat<-fread('../../docs/tables/fastBAT/mdd_fastbat_AllgeneMatrix.gene.fastbat')
fastbat$P.FDR<-p.adjust(fastbat$Pvalue, method='fdr')

##########
# H-MAGMA
##########

hmagma<-fread('../../docs/tables/H-MAGMA/PGC_MDD_Results_mar2022.csv')

# Exclude astrocytes
hmagma_noAstr<-hmagma[hmagma$Analysis != 'Astrocytes',]

# Apply FDR correction across all tests
hmagma_noAstr$P.FDR<-p.adjust(hmagma_noAstr$P, method = 'fdr')

Genes<-getBM(attributes=c('external_gene_name','ensembl_gene_id'), mart = ensembl)
Genes<-Genes[!duplicated(Genes$ensembl_gene_id),]

hmagma_noAstr<-merge(hmagma_noAstr, Genes, by.x='GENE', by.y='ensembl_gene_id')

##########
# TWAS
##########

twas<-fread('../../docs/tables/twas/PGC_MDD3_twas_AllTissues_GW.txt')
twas_sig<-twas[twas$TWAS.P < 3.685926e-08,]

##########
# Colocalisation
##########

coloc<-read.csv('../../docs/tables/twas/PGC_MDD3_TWAS_colocalisation.csv')
coloc_sig<-coloc[coloc$COLOC.PP4 > 0.8,]

##########
# FOCUS 
##########

focus<-read.csv('../../docs/tables/twas/PGC_MDD3_TWAS.TWSig.FOCUS.results.csv')

fusion <- fread("../../docs/tables/twas/PGC_MDD3_twas_AllTissues_TWSig_CLEAN.txt")
fusion<-fusion[,c('PANEL','PANEL_clean_short','PANEL_clean'), with=F]
fusion<-fusion[!duplicated(fusion),]

focus<-merge(focus, fusion, by.x='SNP.weight.Set', by.y='PANEL_clean_short')

focus_sig<-focus[focus$FOCUS_pip > 0.5,]

##########
# Expression analysis based high confidence genes
##########

expression_highconf_res<-fread('../../docs/tables/twas/PGC3_MDD_TWAS_HighConf_results.csv')

##########
# SMR
##########

# Read in the SMR results
smr_res<-list()

smr_res[['eQTLGen_Blood']]<-fread('../../docs/tables/twas/eqtlgen_smr_res_GW_withIDs.csv')

names(smr_res[['eQTLGen_Blood']])[names(smr_res[['eQTLGen_Blood']]) == 'GeneSymbol']<-'HGNCName'
smr_res[['eQTLGen_Blood']]$eQTL_source<-'eQTLGen_Blood'

tissue<-c("Basalganglia","Cerebellum","Cortex","Hippocampus","Spinalcord")

for(tissue_i in tissue){
  smr_res[[tissue_i]]<-fread(paste0('../../docs/tables/twas/metabrain_',tissue_i,'_smr_res_GW_withIDs.csv'))
  smr_res[[tissue_i]]$eQTL_source<-paste0('MetaBrain_',tissue_i)
}

smr_res_dat<-do.call(rbind, smr_res)
smr_res_dat$p_SMR_fdr_all<-p.adjust(smr_res_dat$p_SMR, method="fdr")

smr_res_dat_sig<-smr_res_dat[smr_res_dat$p_SMR_fdr_all < 0.05,]

##########
# HEIDI
##########

heidi<-smr_res_dat_sig[smr_res_dat_sig$p_HEIDI > 0.05,]

##########
# PWAS
##########

# For no just read in the ROSMAP results
pwas<-NULL
for(i in 1:22){
  if(i != 6){
    pwas<-rbind(pwas, fread(paste0('../../docs/tables/pwas/PGC_MDD3_pwas_rosmap_chr',i)))
  } else {
    pwas<-rbind(pwas, fread(paste0('../../docs/tables/pwas/PGC_MDD3_pwas_rosmap_chr',i)))
    pwas<-rbind(pwas, fread(paste0('../../docs/tables/pwas/PGC_MDD3_pwas_rosmap_chr',i,'.MHC')))
  }
}

pwas$TWAS.P.FDR<-p.adjust(pwas$TWAS.P)
pwas$ID<-gsub('.*\\.','', pwas$ID)

# Read in PWAS and SMR results for all significant ROSMAP PWAS assoc results
pwas_smr_rosmap_banner<-fread('../../docs/tables/pwas/rosmap_banner_pwas_smr_results.csv')

########
# PsyOPS
########

psyops <- fread('../../docs/tables/psyops/psyops_full_eur.cojo.txt')
psyops_prioritised<-NULL
for(i in unique(psyops$lead_variant)){
  tmp<-psyops[psyops$lead_variant == i,]
  tmp<-tmp[tmp$PsyOPS_score == max(tmp$PsyOPS_score),]
  tmp<-tmp[tmp$distance == min(tmp$distance),]
  psyops_prioritised<-rbind(psyops_prioritised, tmp)
}
psyops_genes <- psyops_prioritised$gene

Create UpSet plot

This plot will show the number of genes returned by each analysis and the overlap of each analysis

Show code
# Create data.frame listing genes with T/F indicating whether it was supported by each analysis 
gene_overlap<-list()
gene_overlap[['Fine-mapping']]<-finemap_genes
gene_overlap[['Expression']]<-expression_highconf_res$ID
gene_overlap[['Protein']]<-pwas_smr_rosmap_banner$ID[which(pwas_smr_rosmap_banner$banner_replicated  & pwas_smr_rosmap_banner$rosmap.causal & pwas_smr_rosmap_banner$smr.causal)]
gene_overlap[['Nearest Gene']]<-indep_hits$NearestGene[!is.na(indep_hits$NearestGene)]
gene_overlap[['fastBAT']]<-fastbat$Gene[fastbat$P.FDR < 0.05]
gene_overlap[['H-MAGMA']]<-unique(hmagma_noAstr$external_gene_name[hmagma_noAstr$P.FDR < 0.05])
gene_overlap[['PsyOPS']]<-psyops_genes

library(UpSetR)

png('../../docs/figures/gene_consensus_upset_dense.png', units = 'px', res=300, height=1500, width=2500)

upset(fromList(gene_overlap), nsets=10, order.by = "freq")

dev.off()
## quartz_off_screen 
##                 2
gene_overlap<-list()
gene_overlap[['Fine-mapping']]<-finemap_genes
gene_overlap[['Expression']]<-expression_highconf_res$ID
gene_overlap[['Protein']]<-pwas_smr_rosmap_banner$ID[which(pwas_smr_rosmap_banner$banner_replicated & pwas_smr_rosmap_banner$rosmap.causal & pwas_smr_rosmap_banner$smr.causal)]
gene_overlap[['PsyOPS']]<-psyops_genes

png('../../docs/figures/gene_consensus_upset_highconf.png', units = 'px', res=300, height=1400, width=1500)

upset(fromList(gene_overlap), nsets=10, order.by = "freq")

dev.off()
## quartz_off_screen 
##                 2
Show UpSet plot of genes across all analyses

High-confidence genes

Show UpSet plot of genes across high-confidence analyses

High-confidence genes


Compare high confidence genes across all analyses

Show code
# Define high confidence associations
# Genes implicated by finemapping
finemap_highconf<-finemap_genes

# Genes implicated by TWAS, colocalisation and FOCUS from any panel
expression_highconf<-expression_highconf_res$ID

# Genes implicated by PWAS, SMR, coloc and HEIDI in ROSMAP and Banner
protein_highconf<-pwas_smr_rosmap_banner$ID[which(pwas_smr_rosmap_banner$banner_replicated & pwas_smr_rosmap_banner$rosmap.causal & pwas_smr_rosmap_banner$smr.causal)]

high_conf<-unique(c(finemap_highconf, expression_highconf, protein_highconf))
high_conf_tab<-data.frame(ID=high_conf)

# finemap
# Joni said he used the same gene list as David Howard (fastBAT)
high_conf_tab$finemap<-'NA'
for(i in 1:nrow(high_conf_tab)){
  if(high_conf_tab$ID[i] %in% fastbat$Gene | high_conf_tab$ID[i] %in% finemap_genes){
    if(high_conf_tab$ID[i] %in% finemap_genes){
      high_conf_tab$finemap[i]<-'Sig'
    } else {
      high_conf_tab$finemap[i]<-'Non-Sig'
    }
  }
}

# expression
high_conf_tab$expression<-'NA'
for(i in 1:nrow(high_conf_tab)){
  if(!(high_conf_tab$ID[i] %in% twas$ID)){
    high_conf_tab$expression[i]<-'NA'
  } else {
    if(!(high_conf_tab$ID[i] %in% expression_highconf_res$ID)){
      high_conf_tab$expression[i]<-'Non-Sig'
    } else {
      if(expression_highconf_res$`SNP-weight Set`[expression_highconf_res$ID == high_conf_tab$ID[i]] == "CMC DLPFC Splicing"){
        high_conf_tab$expression[i]<-'Sig'
      } else {
        if(expression_highconf_res$TWAS.Z[expression_highconf_res$ID == high_conf_tab$ID[i]] > 0){
            high_conf_tab$expression[i]<-'Pos'
        } else {
            high_conf_tab$expression[i]<-'Neg'
        }
      }
    }
  }
}

# protein
high_conf_tab$protein<-'NA'
for(i in 1:nrow(high_conf_tab)){
  if(!(high_conf_tab$ID[i] %in% pwas$ID)){
    high_conf_tab$protein[i]<-'NA'
  } else {
    if(!(high_conf_tab$ID[i] %in% pwas_smr_rosmap_banner$ID[which(pwas_smr_rosmap_banner$banner_replicated & pwas_smr_rosmap_banner$rosmap.causal & pwas_smr_rosmap_banner$smr.causal)])){
      high_conf_tab$protein[i]<-'Non-Sig'
    } else {
      if(pwas_smr_rosmap_banner$rosmap.TWAS.Z[pwas_smr_rosmap_banner$ID == high_conf_tab$ID[i]] > 0){
          high_conf_tab$protein[i]<-'Pos'
      } else {
          high_conf_tab$protein[i]<-'Neg'
      }
    }
  }
}

# fastBAT
high_conf_tab$fastBAT<-'NA'
for(i in 1:nrow(high_conf_tab)){
  if(high_conf_tab$ID[i] %in% fastbat$Gene){
    if(high_conf_tab$ID[i] %in% fastbat$Gene[fastbat$P.FDR < 0.05]){
      high_conf_tab$fastBAT[i]<-'Sig'
    } else {
      high_conf_tab$fastBAT[i]<-'Non-Sig'
    }
  }
}

# hmagma
high_conf_tab$hmagma<-'NA'
for(i in 1:nrow(high_conf_tab)){
  if(high_conf_tab$ID[i] %in% hmagma_noAstr$external_gene_name){
    if(high_conf_tab$ID[i] %in% hmagma_noAstr$external_gene_name[hmagma_noAstr$P.FDR < 0.05]){
      high_conf_tab$hmagma[i]<-'Sig'
    } else {
      high_conf_tab$hmagma[i]<-'Non-Sig'
    }
  }
}

# PsyOPS
high_conf_tab$psyops<-'NA'
for(i in 1:nrow(high_conf_tab)){
  if(high_conf_tab$ID[i] %in% psyops$gene){
    if(high_conf_tab$ID[i] %in% psyops_genes){
      high_conf_tab$psyops[i]<-'Sig'
    } else {
      high_conf_tab$psyops[i]<-'Non-Sig'
    }
  }
}

# Order genes by the number of analyses indicating them as high confidence.
high_conf_tab_log<-high_conf_tab[,-1]
high_conf_tab_log[high_conf_tab_log == 'NA']<-'F'
high_conf_tab_log[high_conf_tab_log == 'Sig']<-'T'
high_conf_tab_log[high_conf_tab_log == 'Non-Sig']<-'F'
high_conf_tab_log[high_conf_tab_log == 'Pos']<-'T'
high_conf_tab_log[high_conf_tab_log == 'Neg']<-'T'

high_conf_tab_log<-data.frame(sapply( high_conf_tab_log, as.logical))
high_conf_tab_log[is.na(high_conf_tab_log)]<-T

high_conf_tab_log$sum<-rowSums(high_conf_tab_log[,1:3])

high_conf_tab<-high_conf_tab[order(-high_conf_tab_log$sum, high_conf_tab$ID),]
high_conf_tab$ID<-factor(high_conf_tab$ID, levels = high_conf_tab$ID)

names(high_conf_tab)<-c('ID','Fine-mapping','Expression','Protein','fastBAT','H-MAGMA','PsyOPS')
high_conf_tab_melt<-melt(as.data.table(high_conf_tab), id.vars='ID')
high_conf_tab_melt$value<-factor(high_conf_tab_melt$value, levels=c('Non-Sig','Sig','Pos','Neg','NA'))
high_conf_tab_melt$ID<-factor(high_conf_tab_melt$ID, levels=rev(levels(high_conf_tab$ID)))

library(ggplot2)
library(cowplot)

png('../../docs/figures/gene_con_heatmap.png', units = 'px', res=300, height=14000, width=2800)
ggplot(data = high_conf_tab_melt, aes(x='1', y = ID, fill=value)) +
  theme_minimal_grid(color = "white") +
  geom_tile(colour = 'black', width=1.5) +
  scale_fill_manual(values=c('#FFFFFF','#33FF33','#FF6666','#3399FF','#CCCCCC'), drop=F) +
    theme(axis.text.x = element_text(angle = 45, hjust = 1),plot.title = element_text(hjust = 0.5)) +
    labs(x ='', y = "", title='', fill='') +
  facet_grid(~ variable) +
  theme(axis.title.x=element_blank(),
        axis.text.x=element_blank(),
        axis.ticks.x=element_blank(),
        strip.background = element_rect(color="black", fill="grey95", size=0.1, linetype="solid"))
dev.off()
## quartz_off_screen 
##                 2
Show heatmap of high confidence associations

High-confidence genes

  • Significant genes in from expression based analyses that are based on splicing data are indicated as green as direction of effect is challenging to interpret.

Compare high confidence genes across expression/protein panels and methods

This will give some indication of how fine-mapped variants may affect gene expression and protein levels, and may also give clarity for associations that have a different direction of effect in the TWAS and PWAS (which is still the case for the GOPC gene).

Show code
###
# Create a dataframe containing gene ID, PANEL, Method and Z scores for all expression and protein analyses.
###
all_func_res<-NULL

# TWAS
twas_tmp<-twas[,c('PANEL','ID','TWAS.Z'), with=F]
twas_tmp$Sig<-twas$TWAS.P < 3.685926e-08
twas_tmp$Coloc<-twas$COLOC.PP4 > 0.8
names(twas_tmp)<-c('Panel','ID','Z','Sig','Coloc')
twas_tmp$Method<-'FUSION'
twas_tmp$Type<-'Expr.'
twas_tmp$Type[grepl('SPLIC',twas_tmp$Panel)]<-'Splice'
# Retain only the most significant assoc for each gene within PANEL (only relevent for splice panel)
twas_tmp<-twas_tmp[order(-abs(twas_tmp$Z)),]
twas_tmp<-twas_tmp[!duplicated(paste0(twas_tmp$Panel, twas_tmp$ID)),]
twas_tmp$Tissue<-NA
twas_tmp$Tissue[!grepl('Adrenal|BLOOD|Blood|Thyroid',twas_tmp$Panel)]<-'Brain'
twas_tmp$Tissue[grepl('BLOOD|Blood',twas_tmp$Panel)]<-'Blood'
twas_tmp$Tissue[grepl('Adrenal|Thyroid',twas_tmp$Panel)]<-'HPA/HPT'

twas_tmp<-merge(twas_tmp, focus_sig[,c('ID','PANEL','FOCUS_pip')], by.x=c('Panel','ID'), by.y=c('PANEL','ID'), all.x=T)
twas_tmp$FOCUS[twas_tmp$FOCUS_pip > 0.5]<-T
twas_tmp$FOCUS[twas_tmp$FOCUS_pip < 0.5 | is.na(twas_tmp$FOCUS_pip)]<-F
twas_tmp<-twas_tmp[order(-twas_tmp$FOCUS_pip),]
twas_tmp<-twas_tmp[!duplicated(paste0(twas_tmp$Panel, twas_tmp$ID)),]
twas_tmp$FOCUS_pip<-NULL

all_func_res<-rbind(all_func_res, twas_tmp)

# SMR expression
smr_res_dat$Z<-smr_res_dat$b_SMR/smr_res_dat$se_SMR
smr_res_dat$Sig<-smr_res_dat$p_SMR_fdr_all < 0.05
smr_res_dat$Coloc<-smr_res_dat$p_HEIDI > 0.05
smr_tmp<-smr_res_dat[,c('eQTL_source','HGNCName','Z','Sig','Coloc'), with=F]
names(smr_tmp)<-c('Panel','ID','Z','Sig','Coloc')
smr_tmp$Method<-'SMR'
smr_tmp$Type<-'Expr.'
smr_tmp$Tissue<-NA
smr_tmp$Tissue[!grepl('eQTLGen_Blood',smr_tmp$Panel)]<-'Brain'
smr_tmp$Tissue[grepl('eQTLGen_Blood',smr_tmp$Panel)]<-'Blood'
smr_tmp$FOCUS<-F

all_func_res<-rbind(all_func_res, smr_tmp)

# PWAS
pwas_smr_rosmap_banner$rosmap.sig<-T
pwas_rosmap_tmp<-pwas_smr_rosmap_banner[,c('ID','rosmap.TWAS.Z','rosmap.sig','rosmap.causal'), with=F]
pwas_rosmap_tmp$PANEL<-'ROSMAP DLPFC'
pwas_rosmap_tmp<-pwas_rosmap_tmp[,c('PANEL','ID','rosmap.TWAS.Z','rosmap.sig','rosmap.causal'), with=F]
names(pwas_rosmap_tmp)<-c('Panel','ID','Z','Sig','Coloc')
pwas_rosmap_tmp<-pwas_rosmap_tmp[order(-abs(pwas_rosmap_tmp$Z)),]
pwas_rosmap_tmp<-pwas_rosmap_tmp[!duplicated(paste0(pwas_rosmap_tmp$Panel, pwas_rosmap_tmp$ID)),]
pwas_rosmap_tmp$Method<-'FUSION'
pwas_rosmap_tmp$Type<-'Protein'
pwas_rosmap_tmp$Tissue<-'Brain'
pwas_rosmap_tmp$FOCUS<-F

all_func_res<-rbind(all_func_res, pwas_rosmap_tmp)

pwas_banner_tmp<-pwas_smr_rosmap_banner[,c('ID','banner.TWAS.Z','banner_replicated','banner.causal'), with=F]
pwas_banner_tmp$PANEL<-'Banner et al. DLPFC'
pwas_banner_tmp<-pwas_banner_tmp[,c('PANEL','ID','banner.TWAS.Z','banner_replicated','banner.causal'), with=F]
names(pwas_banner_tmp)<-c('Panel','ID','Z','Sig','Coloc')
pwas_banner_tmp<-pwas_banner_tmp[order(-abs(pwas_banner_tmp$Z)),]
pwas_banner_tmp<-pwas_banner_tmp[!duplicated(paste0(pwas_banner_tmp$Panel, pwas_banner_tmp$ID)),]
pwas_banner_tmp$Method<-'FUSION'
pwas_banner_tmp$Type<-'Protein'
pwas_banner_tmp$Tissue<-'Brain'
pwas_banner_tmp$FOCUS<-F

all_func_res<-rbind(all_func_res, pwas_banner_tmp)

# SMR protein
pwas_smr_rosmap_banner$z_SMR<-abs(qnorm(pwas_smr_rosmap_banner$p_SMR/2))
pwas_smr_rosmap_banner$z_SMR<-sign(pwas_smr_rosmap_banner$b_SMR)*pwas_smr_rosmap_banner$z_SMR

smr_rosmap_tmp<-pwas_smr_rosmap_banner[,c('ID','z_SMR','smr_replicated','smr.causal'), with=F]
smr_rosmap_tmp$PANEL<-'ROSMAP DLPFC'
smr_rosmap_tmp<-smr_rosmap_tmp[,c('PANEL','ID','z_SMR','smr_replicated','smr.causal'), with=F]
names(smr_rosmap_tmp)<-c('Panel','ID','Z','Sig','Coloc')
smr_rosmap_tmp<-smr_rosmap_tmp[order(-abs(smr_rosmap_tmp$Z)),]
smr_rosmap_tmp<-smr_rosmap_tmp[!duplicated(paste0(smr_rosmap_tmp$Panel, smr_rosmap_tmp$ID)),]
smr_rosmap_tmp$Method<-'SMR'
smr_rosmap_tmp$Type<-'Protein'
smr_rosmap_tmp$Tissue<-'Brain'
smr_rosmap_tmp$FOCUS<-F

all_func_res<-rbind(all_func_res, smr_rosmap_tmp)

# Subset to high confidence genes
all_func_res<-all_func_res[all_func_res$ID %in% high_conf,]

# Remove missing values
all_func_res<-all_func_res[complete.cases(all_func_res),]

all_func_res$Group<-paste0(all_func_res$Tissue,'\n',all_func_res$Method,'\n',all_func_res$Type )
all_func_res$Group<-factor(all_func_res$Group, levels=c("Brain\nFUSION\nExpr.","Brain\nFUSION\nSplice","Brain\nSMR\nExpr.","Brain\nFUSION\nProtein","Brain\nSMR\nProtein","Blood\nFUSION\nExpr.","Blood\nSMR\nExpr.","HPA/HPT\nFUSION\nExpr."))

all_func_res$ID<-factor(all_func_res$ID, levels=rev(levels(high_conf_tab$ID)))

all_func_res$Panel[all_func_res$Panel == "Adrenal_Gland"]<-'GTeX Adrenal Gland'
all_func_res$Panel[all_func_res$Panel == "Brain_Cerebellar_Hemisphere"]<-'GTeX Cerebellar Hemisphere'
all_func_res$Panel[all_func_res$Panel == "Brain_Cerebellum"]<-'GTeX Cerebellum'
all_func_res$Panel[all_func_res$Panel == "Brain_Hypothalamus"]<-'GTeX Hypothalamus'
all_func_res$Panel[all_func_res$Panel == "CMC.BRAIN.RNASEQ"]<-'CMC DLPFC'
all_func_res$Panel[all_func_res$Panel == "CMC.BRAIN.RNASEQ_SPLICING"]<-'CMC DLPFC'
all_func_res$Panel[all_func_res$Panel == "Pituitary"]<-'GTeX Pituitary'
all_func_res$Panel[all_func_res$Panel == "PsychENCODE"]<-'PsychENCODE DLPFC'
all_func_res$Panel[all_func_res$Panel == "Whole_Blood"]<-'GTeX'
all_func_res$Panel[all_func_res$Panel == "NTR.BLOOD.RNAARR"]<-'NTR'
all_func_res$Panel[all_func_res$Panel == "Thyroid"]<-'GTeX Thyroid'
all_func_res$Panel[all_func_res$Panel == "Brain_Caudate_basal_ganglia"]<-'GTeX Caudate basalganglia'
all_func_res$Panel[all_func_res$Panel == "YFS.BLOOD.RNAARR"]<-'YFS'
all_func_res$Panel[all_func_res$Panel == "Brain_Cortex"]<-'GTeX Cortex'
all_func_res$Panel[all_func_res$Panel == "Brain_Frontal_Cortex_BA9"]<-'GTeX Frontal Cortex BA9'
all_func_res$Panel[all_func_res$Panel == "Brain_Hippocampus"]<-'GTeX Hippocampus'
all_func_res$Panel[all_func_res$Panel == "Brain_Amygdala"]<-'GTeX Amygdala'
all_func_res$Panel[all_func_res$Panel == "Brain_Anterior_cingulate_cortex_BA24"]<-'GTeX Anterior cingulate cortex BA24'
all_func_res$Panel[all_func_res$Panel == "Brain_Substantia_nigra"]<-'GTeX Substantia nigra'
all_func_res$Panel[all_func_res$Panel == "Brain_Nucleus_accumbens_basal_ganglia"]<-'GTeX Nucleus accumbens basalganglia'
all_func_res$Panel[all_func_res$Panel == "Brain_Putamen_basal_ganglia"]<-'GTeX Nucleus Putamen basalganglia'
all_func_res$Panel[all_func_res$Panel == "eQTLGen_Blood"]<-'eQTLGen'
all_func_res$Panel[all_func_res$Panel == "MetaBrain_Cerebellum"]<-'MetaBrain Cerebellum'
all_func_res$Panel[all_func_res$Panel == "MetaBrain_Basalganglia"]<-'MetaBrain Basalganglia'
all_func_res$Panel[all_func_res$Panel == "MetaBrain_Cortex"]<-'MetaBrain Cortex'
all_func_res$Panel[all_func_res$Panel == "MetaBrain_Hippocampus"]<-'MetaBrain Hippocampus'

all_func_res$Panel<-factor(all_func_res$Panel, levels=c("GTeX Adrenal Gland" ,"GTeX Amygdala" ,"GTeX Anterior cingulate cortex BA24" ,"GTeX Caudate basalganglia" ,"GTeX Cerebellar Hemisphere" ,"GTeX Cerebellum" ,"GTeX Cortex" ,"GTeX Frontal Cortex BA9" ,"GTeX Hippocampus" ,"GTeX Hypothalamus", "GTeX Nucleus accumbens basalganglia","GTeX Nucleus Putamen basalganglia" ,"GTeX Pituitary",'GTeX Substantia nigra' ,"GTeX Thyroid","CMC DLPFC", "PsychENCODE DLPFC", "GTeX" ,"NTR" ,"YFS", "eQTLGen" ,'MetaBrain Basalganglia',"MetaBrain Cerebellum" ,"MetaBrain Cortex" , 'MetaBrain Hippocampus',"ROSMAP DLPFC" ,"Banner et al. DLPFC"))


# Create heatmap
library(ggplot2)

heatmap<-ggplot(data = all_func_res, aes(x = Panel, y = ID)) +
    theme_bw()  +
    geom_tile(aes(fill = Z), width=0.95, height=0.95) +
  geom_tile(data=all_func_res[all_func_res$Sig == T,], aes(x = Panel, y = ID), colour='black', fill=NA, size=0.3, width=0.95, height=0.95) +
  geom_tile(data=all_func_res[all_func_res$Coloc ==T & all_func_res$Sig == T,], aes(x = Panel, y = ID), colour='green2', fill=NA, size=0.3, width=0.95, height=0.95) +
  geom_tile(data=all_func_res[all_func_res$Coloc ==T & all_func_res$Sig == T & all_func_res$FOCUS == T,], aes(x = Panel, y = ID), colour='magenta2', fill=NA, size=0.3, width=0.95, height=0.95) +
    scale_fill_gradientn(colours=c("dodgerblue2","white","red"), na.value = 'white',name = "Z-score") +
    theme(axis.text.x = element_text(angle = 45, hjust = 1),plot.title = element_text(hjust = 0.5)) +
    geom_text(aes(label=round(Z,1)), color="black", size=3) +
    labs(title="High confidence genes across panels and methods") +
  facet_wrap(~ Group , nrow=1, scales = "free_x")

group_siz<-NULL
for(i in c("Brain\nFUSION\nExpr.","Brain\nFUSION\nSplice","Brain\nSMR\nExpr.","Brain\nFUSION\nProtein","Brain\nSMR\nProtein","Blood\nFUSION\nExpr.","Blood\nSMR\nExpr.","HPA/HPT\nFUSION\nExpr.")){
  group_siz<-rbind(group_siz, data.frame(Group=i,
                           Size=length(unique(all_func_res$Panel[all_func_res$Group==i]))))
}

# Set minimum size to 3 to allow space for labels
group_siz$Size[group_siz$Size < 2]<-2
group_siz$Prop<-group_siz$Size/sum(group_siz$Size)
group_siz$Width<-4*group_siz$Prop

library(grid)
gt = ggplot_gtable(ggplot_build(heatmap))

for(i in 1:nrow(group_siz)){
  gt$widths[gt$layout$l[grep(paste0('panel-',i,'-1'), gt$layout$name)]] = group_siz$Width[i]*gt$widths[gt$layout$l[grep(paste0('panel-',i,'-1'), gt$layout$name)]]

}

png('../../docs/figures/gene_con_func_heatmap.png', units = 'px', res=300, height=8000, width=2900)

grid.draw(gt)

a<-dev.off()
Show heatmap of high confidence associations across expression and protein datasets and methods

High-confidence genes

  • Black box indicates significance
  • Green box indicates colocalisation
  • Magenta box indicates FOCUS PIP > 0.5
  • Some MetaBrain Basalganglia, Hippocampus, Spinalcord panels are not present due to not containing any high confidence genes
  • Banner PWAS and ROSMAP SMR results only shown for genes that were signficant in the discovery ROSMAP PWAS.

Query GO terms using PANTHER

Conduct an overrepresentation test with PANTHER using the PANTHER API. The service returns results as JSON. The first step is querying the IDs for humans (the taxon) and the annotation datasets.

Show code
library(httr)
library(jsonlite)

# the PantherDB URL
panther_db <- "http://pantherdb.org"

# Get list of taxon IDs
supportedgenomes_response <- GET(modify_url(panther_db, path="/services/oai/pantherdb/supportedgenomes"))

# find the taxon ID for humans
supportedgenomes <- fromJSON(content(supportedgenomes_response, "text"))
genomes <- supportedgenomes$search$output$genomes$genome
human_taxon_id <- genomes$taxon_id[which(genomes$name == 'human')]

# get list of annotation datasets
supportedannotdatasets_response <- GET(modify_url(panther_db, path="services/oai/pantherdb/supportedannotdatasets"))

# find GO ids for biological process, molecular function, and cellular components
supportedannotdatasets <- fromJSON(content(supportedannotdatasets_response, "text"))
annotation_data_types <- supportedannotdatasets$search$annotation_data_sets$annotation_data_type
biological_process_id = annotation_data_types$id[which(annotation_data_types$label == "biological_process")]
cellular_component_id = annotation_data_types$id[which(annotation_data_types$label == "cellular_component")]
molecular_function_id = annotation_data_types$id[which(annotation_data_types$label == "molecular_function")]

The next step is to query the overrepresentation test.

Show code
# construct enrichment overrepresentation query from gene list
# and annotation ID
overrep_url <- function(gene_list, annot_data_set_id, url=panther_db, organism_id=human_taxon_id) {
    modify_url(url,
        path="/services/oai/pantherdb/enrich/overrep",
        query=list(geneInputList=paste(gene_list, collapse=","),
                   organism=organism_id,
                   annotDataSet=annot_data_set_id,
                   enrichmentTestType="FISHER",
                   correction="FDR"))
}

# construct URL and query PANTHER. Parse out JSON response
overrep_query <- function(genes, annot_data_set_id, ...) {
    # make query
    overrep_response <- GET(overrep_url(genes, annot_data_set_id, ...))
    # parse JSON
    overrep <- fromJSON(content(overrep_response, "text"))
    return(overrep)
}

high_conf_overrep_biol <- overrep_query(high_conf, biological_process_id)

high_conf_overrep_mol <- overrep_query(high_conf, molecular_function_id)

high_conf_overrep_cell<- overrep_query(high_conf, cellular_component_id)

Biological processes

Show code
# extract results table from the query
panther_format <- function(query) {
    results <- query$results$result
    results_labels <- results$term
    results_terms <- cbind(results_labels,
                           results[,c('fold_enrichment', 'fdr',
                                      'number_in_list', 'expected', 
                                      'number_in_reference', 'pValue')])
                                      
    return(results_terms)
}

high_conf_overrep_biol_results <- panther_format(high_conf_overrep_biol)
high_conf_overrep_mol_results <- panther_format(high_conf_overrep_mol)
high_conf_overrep_cell_results <- panther_format(high_conf_overrep_cell)
Show Go: Biological Processes table
# filter for FDR
knitr::kable(high_conf_overrep_biol_results[which(high_conf_overrep_biol_results$fdr <= 0.05),], caption='GO: Biological Processes')
GO: Biological Processes
id label fold_enrichment fdr number_in_list expected number_in_reference pValue
GO:0007399 nervous system development 2.8017844 0.0000000 64 22.8425858 2081 0.0000000
GO:0007275 multicellular organism development 1.9636855 0.0000003 89 45.3229394 4129 0.0000000
GO:0048731 system development 2.0086973 0.0000006 82 40.8224780 3719 0.0000000
GO:0006928 movement of cell or subcellular component 2.7699862 0.0000024 45 16.2455680 1480 0.0000000
GO:0048856 anatomical structure development 1.7571827 0.0000061 97 55.2020011 5029 0.0000000
GO:0065008 regulation of biological quality 1.9295013 0.0000054 79 40.9432221 3730 0.0000000
GO:0032502 developmental process 1.6873732 0.0000064 103 61.0416242 5561 0.0000000
GO:0032501 multicellular organismal process 1.5906211 0.0000173 113 71.0414299 6472 0.0000000
GO:0022008 neurogenesis 2.8306355 0.0000167 38 13.4245471 1223 0.0000000
GO:0007417 central nervous system development 2.9152566 0.0001357 32 10.9767351 1000 0.0000001
GO:0048699 generation of neurons 2.7810901 0.0002186 33 11.8658507 1081 0.0000002
GO:0032879 regulation of localization 1.9460552 0.0005392 59 30.3177425 2762 0.0000004
GO:0120035 regulation of plasma membrane bounded cell projection organization 3.3633077 0.0007784 23 6.8385060 623 0.0000006
GO:0031344 regulation of cell projection organization 3.2790934 0.0010997 23 7.0141338 639 0.0000010
GO:0048519 negative regulation of biological process 1.5849778 0.0012006 92 58.0449755 5288 0.0000011
GO:0030182 neuron differentiation 2.6847280 0.0011931 30 11.1743164 1018 0.0000012
GO:0009653 anatomical structure morphogenesis 2.0430145 0.0012404 49 23.9841663 2185 0.0000013
GO:0007420 brain development 3.0086450 0.0012796 25 8.3093885 757 0.0000015
GO:0040011 locomotion 2.4899198 0.0014144 34 13.6550585 1244 0.0000017
GO:0048523 negative regulation of cellular process 1.6097703 0.0014900 86 53.4237700 4867 0.0000019
GO:0048513 animal organ development 1.8054141 0.0014678 63 34.8950410 3179 0.0000020
GO:0050890 cognition 4.4081502 0.0020746 15 3.4027879 310 0.0000029
GO:0000902 cell morphogenesis 3.0544325 0.0021236 23 7.5300403 686 0.0000031
GO:0043269 regulation of ion transport 3.0499865 0.0020833 23 7.5410170 687 0.0000032
GO:0034765 regulation of ion transmembrane transport 3.4968356 0.0023296 19 5.4334839 495 0.0000037
GO:0060322 head development 2.8327665 0.0024886 25 8.8252951 804 0.0000041
GO:0048812 neuron projection morphogenesis 3.5494196 0.0032177 18 5.0712516 462 0.0000055
GO:0016477 cell migration 2.7132257 0.0031044 26 9.5826898 873 0.0000055
GO:0050807 regulation of synapse organization 5.2307236 0.0030892 12 2.2941376 209 0.0000057
GO:0120039 plasma membrane bounded cell projection morphogenesis 3.5189525 0.0032450 18 5.1151586 466 0.0000062
GO:0099537 trans-synaptic signaling 3.6874526 0.0031837 17 4.6102288 420 0.0000063
GO:0048858 cell projection morphogenesis 3.4890040 0.0034045 18 5.1590655 470 0.0000070
GO:0032409 regulation of transporter activity 4.3529856 0.0034164 14 3.2161834 293 0.0000072
GO:0050803 regulation of synapse structure or activity 5.0847499 0.0034608 12 2.3599981 215 0.0000075
GO:0050793 regulation of developmental process 1.8863947 0.0035562 51 27.0356987 2463 0.0000079
GO:0010975 regulation of neuron projection development 3.5850234 0.0039069 17 4.7419496 432 0.0000090
GO:0034762 regulation of transmembrane transport 3.1523104 0.0038431 20 6.3445529 578 0.0000091
GO:0051179 localization 1.5369118 0.0039614 87 56.6070232 5157 0.0000096
GO:0007610 behavior 3.1306450 0.0040182 20 6.3884599 582 0.0000100
GO:0051049 regulation of transport 2.0918891 0.0042273 40 19.1214726 1742 0.0000108
GO:0032990 cell part morphogenesis 3.3534394 0.0044591 18 5.3676235 489 0.0000117
GO:0051128 regulation of cellular component organization 1.9036191 0.0046248 49 25.7404439 2345 0.0000124
GO:0007611 learning or memory 4.4356667 0.0046217 13 2.9307883 267 0.0000127
GO:0030154 cell differentiation 1.7058260 0.0047987 64 37.5184807 3418 0.0000135
GO:0048869 cellular developmental process 1.6949166 0.0050749 64 37.7599689 3440 0.0000146
GO:0099536 synaptic signaling 3.4416224 0.0050814 17 4.9395308 450 0.0000149
GO:0048666 neuron development 2.6696489 0.0056179 24 8.9899461 819 0.0000168
GO:0010468 regulation of gene expression 1.5456952 0.0058984 82 53.0505610 4833 0.0000181
GO:0050804 modulation of chemical synaptic transmission 3.4378026 0.0086574 16 4.6541357 424 0.0000271
GO:0099177 regulation of trans-synaptic signaling 3.4297137 0.0087199 16 4.6651124 425 0.0000278
GO:0008088 axo-dendritic transport 8.6177350 0.0087595 7 0.8122784 74 0.0000285
GO:0007416 synapse assembly 7.0758656 0.0086957 8 1.1306037 103 0.0000289
GO:0051252 regulation of RNA metabolic process 1.6263838 0.0088610 67 41.1956870 3753 0.0000300
GO:0050808 synapse organization 4.0283096 0.0096608 13 3.2271601 294 0.0000333
GO:0031346 positive regulation of cell projection organization 3.7512493 0.0100180 14 3.7320900 340 0.0000352
GO:0098609 cell-cell adhesion 3.0367257 0.0115710 18 5.9274370 540 0.0000413
GO:0051674 localization of cell 2.3834765 0.0113718 27 11.3279907 1032 0.0000414
GO:0048870 cell motility 2.3834765 0.0111757 27 11.3279907 1032 0.0000414
GO:0048468 cell development 2.0208426 0.0118441 37 18.3091942 1668 0.0000446
GO:0098742 cell-cell adhesion via plasma-membrane adhesion molecules 4.1409895 0.0135619 12 2.8978581 264 0.0000519
GO:0007268 chemical synaptic transmission 3.3993198 0.0140627 15 4.4126475 402 0.0000547
GO:0098916 anterograde trans-synaptic signaling 3.3993198 0.0138359 15 4.4126475 402 0.0000547
GO:0032412 regulation of ion transmembrane transporter activity 4.1098543 0.0138451 12 2.9198115 266 0.0000557
GO:0010976 positive regulation of neuron projection development 5.4661062 0.0152156 9 1.6465103 150 0.0000621
GO:0008150 biological_process 1.0967512 0.0150037 215 196.0335130 17859 0.0000622
NA UNCLASSIFIED 0.3670767 0.0147764 11 29.9664870 2730 0.0000622
GO:0019219 regulation of nucleobase-containing compound metabolic process 1.5711071 0.0164384 70 44.5545680 4059 0.0000703
GO:0022898 regulation of transmembrane transporter activity 3.9609465 0.0179813 12 3.0295789 276 0.0000780
GO:0050789 regulation of biological process 1.2265939 0.0187814 158 128.8119870 11735 0.0000827
GO:0009892 negative regulation of metabolic process 1.6882067 0.0191076 55 32.5789499 2968 0.0000853
GO:1904062 regulation of cation transmembrane transport 3.4378026 0.0191091 14 4.0723687 371 0.0000866
GO:0050794 regulation of cellular process 1.2362369 0.0198093 153 123.7626888 11275 0.0000910
GO:1900244 positive regulation of synaptic vesicle endocytosis 45.5508850 0.0217047 3 0.0658604 6 0.0001011
GO:0032989 cellular component morphogenesis 2.8175805 0.0220585 18 6.3884599 582 0.0001042
GO:0001764 neuron migration 5.7842394 0.0229921 8 1.3830686 126 0.0001100
GO:0051130 positive regulation of cellular component organization 2.2623171 0.0241427 26 11.4926417 1047 0.0001171
GO:0065007 biological regulation 1.2055331 0.0238295 165 136.8689106 12469 0.0001171
GO:0048522 positive regulation of cellular process 1.4284250 0.0266947 90 63.0064598 5740 0.0001329
GO:0007156 homophilic cell adhesion via plasma membrane adhesion molecules 4.8804520 0.0280170 9 1.8440915 168 0.0001412
GO:0042100 B cell proliferation 10.8454488 0.0299198 5 0.4610229 42 0.0001527
GO:0031175 neuron projection development 2.6386183 0.0295804 19 7.2007383 656 0.0001529
GO:0009889 regulation of biosynthetic process 1.5348072 0.0311534 70 45.6083345 4155 0.0001630
GO:0010629 negative regulation of gene expression 2.3596179 0.0366943 23 9.7473408 888 0.0001943
GO:1903423 positive regulation of synaptic vesicle recycling 34.1631637 0.0364601 3 0.0878139 8 0.0001954
GO:0001505 regulation of neurotransmitter levels 4.1982382 0.0363141 10 2.3819515 217 0.0001970
GO:0009893 positive regulation of metabolic process 1.5517859 0.0365623 65 41.8872213 3816 0.0002006
GO:0007155 cell adhesion 2.2680939 0.0387446 24 10.5815727 964 0.0002151
GO:2001257 regulation of cation channel activity 4.5550885 0.0411314 9 1.9758123 180 0.0002310
GO:0048518 positive regulation of biological process 1.3836400 0.0460579 95 68.6594784 6255 0.0002616
Show Go: Molecular functions table
# filter for FDR
knitr::kable(high_conf_overrep_mol_results[which(high_conf_overrep_mol_results$fdr <= 0.05),], caption='GO: Molecular Functions')
GO: Molecular Functions
id label fold_enrichment fdr number_in_list expected number_in_reference pValue
Show Go: Cellular Components table
# filter for FDR
knitr::kable(high_conf_overrep_cell_results[which(high_conf_overrep_cell_results$fdr <= 0.05),], caption='GO: Cellular Components')
GO: Cellular Components
id label fold_enrichment fdr number_in_list expected number_in_reference pValue
GO:0043005 neuron projection 3.534695 0.0000000 53 14.9942202 1366 0.0000000
GO:0045202 synapse 3.323892 0.0000000 49 14.7417553 1343 0.0000000
GO:0030425 dendrite 4.562447 0.0000000 31 6.7945991 619 0.0000000
GO:0097447 dendritic tree 4.547753 0.0000000 31 6.8165525 621 0.0000000
GO:0036477 somatodendritic compartment 3.881259 0.0000000 36 9.2753412 845 0.0000000
GO:0098794 postsynapse 4.261212 0.0000000 29 6.8055758 620 0.0000000
GO:0030424 axon 4.140989 0.0000001 29 7.0031570 638 0.0000000
GO:0120025 plasma membrane bounded cell projection 2.400627 0.0000001 59 24.5769100 2239 0.0000000
GO:0042995 cell projection 2.329969 0.0000001 60 25.7514207 2346 0.0000000
GO:0030054 cell junction 2.411011 0.0000001 56 23.2267716 2116 0.0000000
GO:0098984 neuron to neuron synapse 4.917425 0.0000048 19 3.8638108 352 0.0000000
GO:0030426 growth cone 7.177715 0.0000134 13 1.8111613 165 0.0000001
GO:0098793 presynapse 3.876671 0.0000179 22 5.6749721 517 0.0000001
GO:0030427 site of polarized growth 6.925865 0.0000169 13 1.8770217 171 0.0000001
GO:0014069 postsynaptic density 4.809721 0.0000266 17 3.5345087 322 0.0000002
GO:0032279 asymmetric synapse 4.736178 0.0000307 17 3.5893924 327 0.0000002
GO:0099572 postsynaptic specialization 4.489073 0.0000591 17 3.7869736 345 0.0000005
GO:0098978 glutamatergic synapse 4.417056 0.0001494 16 3.6223226 330 0.0000013
GO:0097060 synaptic membrane 4.086359 0.0001815 17 4.1601826 379 0.0000017
GO:0031224 intrinsic component of membrane 1.513522 0.0002915 99 65.4103648 5959 0.0000029
GO:0099240 intrinsic component of synaptic membrane 6.110485 0.0003396 11 1.8001846 164 0.0000035
GO:0045211 postsynaptic membrane 4.637908 0.0003337 14 3.0186022 275 0.0000036
GO:0150034 distal axon 4.621104 0.0003322 14 3.0295789 276 0.0000037
GO:0043197 dendritic spine 5.792598 0.0004815 11 1.8989752 173 0.0000057
GO:0044309 neuron spine 5.726397 0.0005125 11 1.9209287 175 0.0000063
GO:0099699 integral component of synaptic membrane 5.993538 0.0008989 10 1.6684637 152 0.0000115
GO:0098839 postsynaptic density membrane 8.008947 0.0009453 8 0.9988829 91 0.0000125
GO:0098797 plasma membrane protein complex 2.772115 0.0016199 22 7.9361795 723 0.0000222
GO:0016021 integral component of membrane 1.460770 0.0027585 93 63.6650639 5800 0.0000392
GO:0043025 neuronal cell body 3.154236 0.0029359 17 5.3895770 491 0.0000432
GO:0099634 postsynaptic specialization membrane 6.176391 0.0047021 8 1.2952547 118 0.0000714
GO:0099055 integral component of postsynaptic membrane 6.124489 0.0048166 8 1.3062315 119 0.0000755
GO:0120111 neuron projection cytoplasm 7.085693 0.0056250 7 0.9879062 90 0.0000909
GO:0098936 intrinsic component of postsynaptic membrane 5.830513 0.0062685 8 1.3720919 125 0.0001044
GO:0034702 ion channel complex 3.656258 0.0093616 12 3.2820438 299 0.0001605
GO:0005886 plasma membrane 1.407450 0.0092062 92 65.3664578 5955 0.0001624
GO:0005891 voltage-gated calcium channel complex 10.352474 0.0102905 5 0.4829763 44 0.0001865
GO:0044297 cell body 2.770537 0.0105730 17 6.1359949 559 0.0001969
GO:0044295 axonal growth cone 15.183628 0.0118159 4 0.2634416 24 0.0002258
GO:0034703 cation channel complex 4.103683 0.0119762 10 2.4368352 222 0.0002347
GO:0000785 chromatin 2.073745 0.0122293 29 13.9843606 1274 0.0002457
GO:0016234 inclusion body 7.098839 0.0140122 6 0.8452086 77 0.0002883
GO:0098590 plasma membrane region 2.048875 0.0177734 28 13.6660353 1245 0.0003745
GO:0099061 integral component of postsynaptic density membrane 8.759786 0.0177102 5 0.5707902 52 0.0003818
GO:0016020 membrane 1.245586 0.0215960 136 109.1855845 9947 0.0004761
GO:0071944 cell periphery 1.358883 0.0226057 96 70.6462674 6436 0.0005095
GO:0099146 intrinsic component of postsynaptic density membrane 8.134087 0.0227439 5 0.6146972 56 0.0005237
GO:0031226 intrinsic component of plasma membrane 1.819955 0.0297481 35 19.2312400 1752 0.0006996
GO:0005798 Golgi-associated vesicle 5.941420 0.0292748 6 1.0098596 92 0.0007028
GO:1904115 axon cytoplasm 7.346917 0.0329274 5 0.6805576 62 0.0008066
GO:0005794 Golgi apparatus 1.818729 0.0339222 33 18.1445432 1653 0.0008476
GO:0043198 dendritic shaft 10.122419 0.0357252 4 0.3951625 36 0.0009102
GO:0031515 tRNA (m1A) methyltransferase complex 60.734513 0.0442336 2 0.0329302 3 0.0011486
GO:0005887 integral component of plasma membrane 1.800215 0.0491457 33 18.3311477 1670 0.0013003
GO:1902495 transmembrane transporter complex 2.854363 0.0497145 12 4.2040896 383 0.0013397
GO:0034704 calcium channel complex 6.507269 0.0489867 5 0.7683715 70 0.0013441